package edu.ccut.saturn.component.loader;

import java.util.List;

import org.dom4j.Element;
import org.osgi.framework.Bundle;

import edu.ccut.saturn.component.INodeInfo;
import edu.ccut.saturn.component.SaturnComponentException;

/**
 * 定义读取节点信息的接口
 * <p>
 * 在组件模型中对任意节点的解析读取操作,都应该实现<code>INodeLoader</code>接口
 * 
 * @author 谷钰
 * @author 温建
 * 
 * @see INodeInfo
 *
 * @version 1.0, 2008.8.23
 */
public interface INodeLoader {
	
	/**
	 * 根据xml根节点对象，解析节点信息，利用<code>Bundle</code>加载需要的class对象,最终返回节点信息列表.
	 * <p>
	 * 如果在解析的过程中出现异常,将终止对该节点的解析过程,并抛出<code>SaturnComponentException</code>
	 * 
	 * @param root xml根节点对象
	 * @param bundle 组件所在Bundle
	 * 
	 * @throws SaturnComponentException 给出出现异常节点的唯一标识和异常堆栈信息
	 * 
	 * @return 节点信息列表
	 */
	List<INodeInfo> loadNode(Element root, Bundle bundle) throws SaturnComponentException;
}
